/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cn.icanci.loopstack.damc.admin.web.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.*;

import cn.icanci.loopstack.damc.admin.biz.service.AppService;
import cn.icanci.loopstack.damc.admin.common.model.TextValue;
import cn.icanci.loopstack.damc.admin.common.model.base.AppVO;
import cn.icanci.loopstack.damc.admin.web.form.AppQueryForm;
import cn.icanci.loopstack.damc.admin.web.mapper.AppWebMapper;
import cn.icanci.loopstack.damc.admin.web.model.App;
import cn.icanci.loopstack.damc.spi.model.R;

/**
 * @author icanci
 * @since 1.0 Created in 2025/05/16 17:22
 */
@RestController
@SuppressWarnings("all")
@RequestMapping("/damcAdmin/app")
public class AppController {
    @Resource
    private AppService   appService;
    @Resource
    private AppWebMapper appWebMapper;

    // ================================ CRUD ================================
    @PostMapping("query")
    public R query(@RequestBody AppQueryForm form) {
        return R.builderOk().data("queryPage", appService.queryPage(appWebMapper.web2vo(form.getData()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize()))
            .build();
    }

    @PostMapping("save")
    public R save(@RequestBody App app) {
        appService.save(appWebMapper.web2vo(app));
        return R.builderOk().build();
    }

    @GetMapping("validateName/{name}")
    public R validateName(@PathVariable("name") String name) {
        AppVO app = appService.queryByName(name);
        return R.builderOk().data("result", app == null).build();
    }

    @GetMapping("validateCode/{code}")
    public R validateKey(@PathVariable("code") String code) {
        AppVO app = appService.queryByCode(code);
        return R.builderOk().data("result", app == null).build();
    }
    // ================================ Load Selectors ================================

    @GetMapping("loadAllSelector")
    public R loadAllSelector() {
        List<TextValue> textValues = appService.loadAllSelector();
        return R.builderOk().data("textValues", textValues).build();
    }
}
